﻿using System;
using System.Globalization;
using Notoric.Model.Elements;
using Notoric.Model.Elements.CWNotation;
using Notoric.Model.Packaging;

namespace Notoric.Model.Internal
{
    /// <summary>
    /// Groups values and methods concerning the manipulation of the project package.
    /// </summary>
    internal static class PackageVocabulary
    {
        #region Public Fields

        /// <summary>
        /// The local name of the XML attribute for the Abbreviated property.
        /// </summary>
        public const string AbbreviatedAttribute = "abbreviated";

        /// <summary>
        /// The local name of the XML attribute for the Abbreviation property.
        /// </summary>
        public const string AbbreviationAttribute = "abbreviation";

        /// <summary>
        /// The local name of the XML attribute for the Accidental property.
        /// </summary>
        public const string AccidentalAttribute = "accidental";

        /// <summary>
        /// The local name of the XML element for the <see cref="Accidental"/> class.
        /// </summary>
        public const string AccidentalElementName = "accidental";

        /// <summary>
        /// The local name of the XML attribute for the AccidentalType property.
        /// </summary>
        public const string AccidentalTypeAttribute = "accidental_type";

        /// <summary>
        /// The local name of the XML attribute for the Articulation property.
        /// </summary>
        public const string ArticulationAttribute = "articulation";

        /// <summary>
        /// The local name of the XML element for the <see cref="Attachment"/> class.
        /// </summary>
        public const string AttachmentElementName = "attachment";

        /// <summary>
        /// The local name of the XML element for the Background property.
        /// </summary>
        public const string BackgroundElementName = "background";

        /// <summary>
        /// The local name of the XML element for the <see cref="Barline"/> class.
        /// </summary>
        public const string BarlineElementName = "barline";

        /// <summary>
        /// The local name of the XML element for the <see cref="BarlineSegment"/> class.
        /// </summary>
        public const string BarlineSegmentElementName = "barline_segment";

        /// <summary>
        /// The local name of the XML attribute for the Type property of the <see cref="Barline"/> class.
        /// </summary>
        public const string BarlineTypeAttribute = "barline_type";

        /// <summary>
        /// The local name of the XML attribute for the Beam property.
        /// </summary>
        public const string BeamAttribute = "beam";

        /// <summary>
        /// The local name of the XML element for the <see cref="Beam"/> class.
        /// </summary>
        public const string BeamElementName = "beam";

        /// <summary>
        /// The local name of the XML element for the BeamedSymbols property.
        /// </summary>
        public const string BeamedSymbolsElementName = "beamed_symbols";

        /// <summary>
        /// The local name of the XML attribute for the Beat property.
        /// </summary>
        public const string BeatAttribute = "beat";

        /// <summary>
        /// The local name of the XML element for the <see cref="BeatElement"/> class.
        /// </summary>
        public const string BeatElementName = "beat";

        /// <summary>
        /// The local name of the XML attribute for the Beats property.
        /// </summary>
        public const string BeatsAttribute = "beats";

        /// <summary>
        /// The local name of the XML attribute for the BeatUnit property.
        /// </summary>
        public const string BeatUnitAttribute = "beat_unit";

        /// <summary>
        /// The local name of the XML attribute for the Beginning property.
        /// </summary>
        public const string BeginningAttribute = "beginning";

        /// <summary>
        /// The local name of the XML element for the BezierPoint1 property.
        /// </summary>
        public const string BezierPoint1ElementName = "bezier_point1";

        /// <summary>
        /// The local name of the XML element for the BezierPoint2 property.
        /// </summary>
        public const string BezierPoint2ElementName = "bezier_point2";

        /// <summary>
        /// The local name of the XML element for the BorderBrush property.
        /// </summary>
        public const string BorderBrushElementName = "border_brush";

        /// <summary>
        /// The local name of the XML element for the BorderThickness property.
        /// </summary>
        public const string BorderThicknessElementName = "border_thickness";

        /// <summary>
        /// The local name of the XML attribute for the Bottom property.
        /// </summary>
        public const string BottomAttribute = "bottom";

        /// <summary>
        /// The local name of the XML element for the <see cref="Brace"/> class.
        /// </summary>
        public const string BraceElementName = "brace";

        /// <summary>
        /// The local name of the XML element for the <see cref="Bracket"/> class.
        /// </summary>
        public const string BracketElementName = "bracket";

        /// <summary>
        /// The local name of the XML element for the <see cref="ChordElement"/> class.
        /// </summary>
        public const string ChordElementName = "chord";

        /// <summary>
        /// The local name of the XML element for the <see cref="Clef"/> class.
        /// </summary>
        public const string ClefElementName = "clef";

        /// <summary>
        /// The local name of the XML element for the ClefPosition property.
        /// </summary>
        public const string ClefPositionAttribute = "clef_position";

        /// <summary>
        /// The local name of the XML attribute for the Type property of the <see cref="Clef"/> class.
        /// </summary>
        public const string ClefTypeAttribute = "clef_type";

        /// <summary>
        /// The local name of the XML attribute for the Coda (CodaSign) property.
        /// </summary>
        public const string CodaAttribute = "coda";

        /// <summary>
        /// The local name of the XML element for the Coda property.
        /// </summary>
        public const string CodaElementName = "coda";

        /// <summary>
        /// The local name of the XML attribute for the Color property.
        /// </summary>
        public const string ColorAttribute = "color";

        /// <summary>
        /// The local name of the XML attribute for the Composition property.
        /// </summary>
        public const string CompositionAttribute = "composition";

        /// <summary>
        /// The local name of the <see cref="CompositionElement"/> XML element.
        /// </summary>
        public const string CompositionElementName = "composition";

        /// <summary>
        /// The type of the relationship between the <see cref="Package"/> and a <see cref="CompositionPart"/>.
        /// </summary>
        public const string CompositionPackageRelationshipType = "Notoric.Package/Relationships/Package/Composition";

        /// <summary>
        /// The content type of the <see cref="CompositionPart"/>.
        /// </summary>
        public const string CompositionPartContentType = "Notoric.Package/Composition";

        /// <summary>
        /// The compression option fot the <see cref="CompositionPart"/>.
        /// </summary>
        public const System.IO.Packaging.CompressionOption CompositionPartCompression = System.IO.Packaging.CompressionOption.Maximum;

        /// <summary>
        /// The type of the relationship between a <see cref="ProjectPart"/> and a <see cref="CompositionPart"/>.
        /// </summary>
        public const string CompositionProjectRelationshipType = "Notoric.Package/Relationships/Project/Composition";

        /// <summary>
        /// The URI of a composition part relative to the composition directory.
        /// </summary>
        public const string CompositionPartUri = "/Composition.xml";

        /// <summary>
        /// The URI of the root compositions directory.
        /// </summary>
        public const string CompositionsRootUri = "/Compositions";

        /// <summary>
        /// The local name of the XML attribute for the ConnectorClass property.
        /// </summary>
        public const string ConnectorClassAttribute = "connector_class";

        /// <summary>
        /// The local name of the XML element for the <see cref="ConnectorElement"/> class.
        /// </summary>
        public const string ConnectorElementName = "connector";

        /// <summary>
        /// The local name of the XML element for the <see cref="CoreSymbol"/> class.
        /// </summary>
        public const string CoreSymbolElementName = "core_symbol";

        /// <summary>
        /// The local name of the XML element that holds the <see cref="PartDescriptorElement.CustomData"/> collection.
        /// </summary>
        public const string CustomPartDatElement = "custom_data";

        /// <summary>
        /// The local name of the XML element that holds the <see cref="DurationalSymbolElement.CustomData"/> collection.
        /// </summary>
        public const string CustomSymbolDataElement = "custom_data";

        /// <summary>
        /// The local name of the XML element for the <see cref="CWPartData"/> class.
        /// </summary>
        public const string CWPartDataElementName = "common_western_notation_data";

        /// <summary>
        /// The local name of the XML element for the <see cref="MusicSectionInterior"/> class.
        /// </summary>
        public const string CWSectionInteriorElementName = "cw_section_interior";

        /// <summary>
        /// The local name of the XML element for the <see cref="CWSymbolData"/> class.
        /// </summary>
        public const string CWSymbolDataElementName = "common_western_notation_data";

        /// <summary>
        /// The local name of the XML element for the <see cref="DefaultImageSectionInterior"/> class.
        /// </summary>
        public const string DefaultImageSectionInteriorElementName = "image_section_interior";

        /// <summary>
        /// The local name of the XML attribute for the Degree property.
        /// </summary>
        public const string DegreeAttribute = "degree";

        /// <summary>
        /// The local name of the XML attribute for the Dots property.
        /// </summary>
        public const string DotsAttribute = "dots";

        /// <summary>
        /// The local name of the XML attribute for the DotsPosition property.
        /// </summary>
        public const string DotsPositionAttribute = "dots_position";

        /// <summary>
        /// The local name of the XML element for the <see cref="DurationalSymbolElement"/> class.
        /// </summary>
        public const string DurationalSymbolElementName = "durational_symbol";

        /// <summary>
        /// The local name of the XML attribute for the Duration property.
        /// </summary>
        public const string DurationAttribute = "duration";

        /// <summary>
        /// The local name of the XML element for the <see cref="DynamicMarkElement"/> class.
        /// </summary>
        public const string DynamicMarkElementName = "dynamic_mark";

        /// <summary>
        /// The local name of the XML element for the <see cref="DynamicsProgressElement"/> class.
        /// </summary>
        public const string DynamicsProgressElementName = "dynamics_progress";

        /// <summary>
        /// The local name of the XML element for the <see cref="DynamicsProgressMark"/> class.
        /// </summary>
        public const string DynamicsProgressMarkElementName = "dynamics_progress_mark";

        /// <summary>
        /// The local name of the XML element for the <see cref="Collections.ElementReference{T}"/> class.
        /// </summary>
        public const string ElementReferenceElementName = "element_reference";

        /// <summary>
        /// The local name of the XML attribute for the End property.
        /// </summary>
        public const string EndAttribute = "end";

        /// <summary>
        /// The local name of the XML element for the <see cref="EndingElement"/> class.
        /// </summary>
        public const string EndingElementName = "ending";

        /// <summary>
        /// The local name of the XML element for the EndingPoint property.
        /// </summary>
        public const string EndingPointElementName = "ending_point";

        /// <summary>
        /// The local name of the XML attribute for the Expression property.
        /// </summary>
        public const string ExpressionAttribute = "expression";

        /// <summary>
        /// The local name of the XML attribute for the Fine property.
        /// </summary>
        public const string FineAttribute = "fine";

        /// <summary>
        /// The local name of the XML attribute for the FirstMeasure property.
        /// </summary>
        public const string FirstMeasureAttribute = "first_measure";

        /// <summary>
        /// The local name of the XML element for the HairpinEnd1 property.
        /// </summary>
        public const string HairpinEnd1ElementName = "hairpin_end1";

        /// <summary>
        /// The local name of the XML element for the HairpinEnd2 property.
        /// </summary>
        public const string HairpinEnd2ElementName = "hairpin_end2";

        /// <summary>
        /// The local name of the XML element for the HairpinPoint property.
        /// </summary>
        public const string HairpinPointElementName = "hairpin_point";

        /// <summary>
        /// The local name of the XML attribute for the HeadPosition property.
        /// </summary>
        public const string HeadPositionAttribute = "head_position";

        /// <summary>
        /// The local name of the XML attribute for the Height property.
        /// </summary>
        public const string HeightAttribute = "height";

        /// <summary>
        /// The local name of the XML attribute for the ImageFile property.
        /// </summary>
        public const string ImageFileAttribute = "image_file";

        /// <summary>
        /// The local name of the XML element of the <see cref="ImageSectionElement"/>.
        /// </summary>
        public const string ImageSectionElementName = "image_section";

        /// <summary>
        /// The local name of the XML attribute for the Index property.
        /// </summary>
        public const string IndexAttribute = "index";

        /// <summary>
        /// The local name of the XML attribute for the ID property.
        /// </summary>
        public const string IDAttribute = "id";

        /// <summary>
        /// The local name of the XML attribute for the ReferenceID property.
        /// </summary>
        public const string IDRefAttribute = "ref";

        /// <summary>
        /// The local name of the XML attribute for the IsCourtesy property.
        /// </summary>
        public const string IsCourtesyAttribute = "is_courtesy";

        /// <summary>
        /// The local name of the XML element for the Key property.
        /// </summary>
        public const string KeyElementName = "key";

        /// <summary>
        /// The local name of the XML element for the <see cref="KeySignature"/> class.
        /// </summary>
        public const string KeySignatureElementName = "key_signature";

        /// <summary>
        /// The local name of the XML element for the <see cref="KeySignatureSign"/> class.
        /// </summary>
        public const string KeySignatureSignElementName = "sign";

        /// <summary>
        /// The local name of the XML attribute for the LastMeasure property.
        /// </summary>
        public const string LastMeasureAttribute = "last_measure";

        /// <summary>
        /// The local name of the XML attribute for the MarkType property.
        /// </summary>
        public const string MarkTypeAttribute = "mark_type";

        /// <summary>
        /// The local name of the XML element for the Margin property.
        /// </summary>
        public const string MarginElementName = "margin";

        /// <summary>
        /// The local name of the XML attribute for the Measure property.
        /// </summary>
        public const string MeasureAttribute = "measure";

        /// <summary>
        /// The local name of the XML element for the <see cref="MeasureElement"/> class.
        /// </summary>
        public const string MeasureElementName = "measure";

        /// <summary>
        /// The local name of the XML element for the Meter property.
        /// </summary>
        public const string MeterElementName = "meter";

        /// <summary>
        /// The local name of the XML element for the <see cref="MusicalContentElement"/> class.
        /// </summary>
        public const string MusicalContentElementName = "musical_content";

        /// <summary>
        /// The local name of the XML element for the <see cref="MusicSectionElement"/> class.
        /// </summary>
        public const string MusicSectionElementName = "music_section";

        /// <summary>
        /// The local name of the XML attribute for the Name property.
        /// </summary>
        public const string NameAttribute = "name";

        /// <summary>
        /// The local name of the XML attribute for the Number property.
        /// </summary>
        public const string NumberAttribute = "number";

        /// <summary>
        /// The local name of the XML element that represents a <see langword="null"/> value.
        /// </summary>
        public const string NullElementName = "null";

        /// <summary>
        /// The local name of the XML attribute for the Left property.
        /// </summary>
        public const string LeftAttribute = "left";

        /// <summary>
        /// The local name of the XML element for the <see cref="LegatoElement"/> class.
        /// </summary>
        public const string LegatoElementName = "legato";

        /// <summary>
        /// The type of the relationship between a <see cref="CompositionPart"/> and its <see cref="LinearCompositionViewPart"/>.
        /// </summary>
        public const string LinearCompositionViewCompositionRelationshipType = "Notoric.Package/Relationships/Composition/LinearView";

        /// <summary>
        /// Holds the compression type of a linear composition view part.
        /// </summary>
        public const System.IO.Packaging.CompressionOption LinearCompositionViewPartCompressionOption = System.IO.Packaging.CompressionOption.Maximum;

        /// <summary>
        /// The type of the relationship between the <see cref="Package"/> and a <see cref="LinearCompositionViewPart"/>.
        /// </summary>
        public const string LinearCompositionViewPackageRelationshipType = "Notoric.Package/Relationships/Package/LinearCompositionView";

        /// <summary>
        /// The Content Type of a linear composition view part.
        /// </summary>
        public const string LinearCompositionViewPartContentType = "Notoric.Package/LinearCompositionView";

        /// <summary>
        /// The URI of a linear composition view part relative to the owner composition part's directory.
        /// </summary>
        public const string LinearCompositionViewPartUri = "/LinearView.xml";

        /// <summary>
        /// The local name of the XML attribute for the Lines property.
        /// </summary>
        public const string LinesAttribute = "lines";

        /// <summary>
        /// The local name of the XML attribute for the LowerStaff property.
        /// </summary>
        public const string LowerStaffAttribute = "lower_staff";

        /// <summary>
        /// The local name of the XML attribute for the Note property.
        /// </summary>
        public const string NoteAttribute = "note";

        /// <summary>
        /// The local name of the XML element for the <see cref="Note"/> class.
        /// </summary>
        public const string NoteElementName = "note";

        /// <summary>
        /// The local name of the XML attribute for the Octave property.
        /// </summary>
        public const string OctaveAttribute = "octave";

        /// <summary>
        /// The local name of the XML attribute for the Orientation property.
        /// </summary>
        public const string OrientationAttribute = "orientation";

        /// <summary>
        /// The <see cref="CultureInfo"/> that is used to format the values in the package.
        /// </summary>
        public static readonly CultureInfo PackageCulture = new CultureInfo("en-US");

        /// <summary>
        /// The namespace prefix of the model XML elements.
        /// </summary>
        public const string PackageNamespacePrefix = "ntp"; 
        
        /// <summary>
        /// The namespace URI of the model XML elements.
        /// </summary>
        public const string PackageNamespaceUri = "http://notoric.codeplex.com/package";

        /// <summary>
        /// The local name of the <see cref="PageElement"/> XML element.
        /// </summary>
        public const string PageElementName = "page";

        /// <summary>
        /// The type of the relationship between the <see cref="Package"/> and a <see cref="PagePart"/>.
        /// </summary>
        public const string PagePackageRelationshipType = "Notoric.Package/Relationships/Package/Page";

        /// <summary>
        /// The content type of the <see cref="PagePart"/>.
        /// </summary>
        public const string PagePartContentType = "Notoric.Package/Page";

        /// <summary>
        /// The compression option fot the <see cref="PagePart"/>.
        /// </summary>
        public const System.IO.Packaging.CompressionOption PagePartCompression = System.IO.Packaging.CompressionOption.Maximum;

        /// <summary>
        /// The type of the relationship between a <see cref="ScorePart"/> and a <see cref="PagePart"/>.
        /// </summary>
        public const string PageScoreRelationshipType = "Notoric.Package/Relationships/Score/Page";

        /// <summary>
        /// The local name of the XML attribute for the PartDescriptor property.
        /// </summary>
        public const string PartDescriptorAttribute = "part_descriptor";

        /// <summary>
        /// The local name of the XML element for the <see cref="PartDescriptorElement"/> class.
        /// </summary>
        public const string PartDescriptorElementName = "part_descriptor";

        /// <summary>
        /// The local name of the XML element for the <see cref="PartElement"/> class.
        /// </summary>
        public const string PartElementName = "part";

        /// <summary>
        /// The local name of the XML attribute for the Path property.
        /// </summary>
        public const string PathAttribute = "path";

        /// <summary>
        /// The name of the XML element for a <see cref="Notoric.Model.Collections.PathCollection"/> item.
        /// </summary>
        public const string PathElementName = "path_element";

        /// <summary>
        /// The local name of the XML element for the <see cref="Point"/> structure.
        /// </summary>
        public const string PointElementName = "point";

        /// <summary>
        /// The local name of the XML attribute for the Position property.
        /// </summary>
        public const string PositionAttribute = "position";

        /// <summary>
        /// The local name of the XML element for the Position property.
        /// </summary>
        public const string PositionElementName = "position";

        /// <summary>
        /// The local name of the XML attribute for the PresentedTone property.
        /// </summary>
        public const string PresentedToneAttribute = "presented_tone";

        /// <summary>
        /// The local name of the <see cref="ProjectElement"/> XML element.
        /// </summary>
        public const string ProjectElementName = "project"; 
        
        /// <summary>
        /// The type of the relationship between the <see cref="Package"/> and the <see cref="ProjectPart"/>.
        /// </summary>
        public const string ProjectPackageRelationshipType = "Notoric.Package/Relationships/Package/Project"; 
        
        /// <summary>
        /// The content type of the <see cref="ProjectPart"/>.
        /// </summary>
        public const string ProjectPartContentType = "Notoric.Package/Project"; 
        
        /// <summary>
        /// The compression option for the <see cref="ProjectPart"/>.
        /// </summary>
        public const System.IO.Packaging.CompressionOption ProjectPartCompression = System.IO.Packaging.CompressionOption.Normal; 
        
        /// <summary>
        /// The URI of the <see cref="ProjectPart"/>.
        /// </summary>
        public static readonly Uri ProjectPartUri = new Uri("/Project.xml", UriKind.Relative);

        /// <summary>
        /// The local name of the XML attribute for the ProgressType property.
        /// </summary>
        public const string ProgressTypeAttribute = "progress_type";

        /// <summary>
        /// The local name of the XML element for the collection of music sections that reference a composition.
        /// </summary>
        public const string ReferencingSectionsElementName = "referencing_sections";

        /// <summary>
        /// The local name of the XML attribute for the Repetition property.
        /// </summary>
        public const string RepetitionAttribute = "repetition";

        /// <summary>
        /// The local name of the XML element for the <see cref="RepetitionElement"/> class.
        /// </summary>
        public const string RepetitionElementName = "repetition";

        /// <summary>
        /// The local name of the resource XML element.
        /// </summary>
        public const string ResourceElementName = "resource";

        /// <summary>
        /// The type of the relationship between the <see cref="Package"/> and a <see cref="ResourcePart"/>.
        /// </summary>
        public const string ResourcePackageRelationshipType = "Notoric.Package/Relationships/Package/Resource";

        /// <summary>
        /// The type of the relationship between the <see cref="ProjectPart"/> and a <see cref="ResourcePart"/>.
        /// </summary>
        public const string ResourceProjectRelationshipType = "Notoric.Package/Relationships/Project/Resource";

        /// <summary>
        /// The compression option for a <see cref="ResourcePart"/>.
        /// </summary>
        public const System.IO.Packaging.CompressionOption ResourcePartCompression = System.IO.Packaging.CompressionOption.Maximum;

        /// <summary>
        /// The the content type of a <see cref="ResourcePart"/>
        /// </summary>
        public const string ResourcePartContentType = "Notoric.Package/Resource";

        /// <summary>
        /// The URI of the root resources directory.
        /// </summary>
        public const string ResourcesRootUri = "/Resources";

        /// <summary>
        /// The local name of the XML element for the <see cref="RestElement"/> class.
        /// </summary>
        public const string RestElementName = "rest";

        /// <summary>
        /// The local name of the XML attribute for the Right property.
        /// </summary>
        public const string RightAttribute = "right";

        /// <summary>
        /// The local name of the XML attribute for the RotationAngle property.
        /// </summary>
        public const string RotationAngleAttribute = "rotation_angle";

        /// <summary>
        /// The local name of the XML element for the <see cref="RtfTextSectionInteriorElement"/> class.
        /// </summary>
        public const string RtfTextSectionInteriorElementName = "rtf_text_interior";

        /// <summary>
        /// The local name of the <see cref="ScoreElement"/> XML element.
        /// </summary>
        public const string ScoreElementName = "score"; 

        /// <summary>
        /// The type of the relationship between the <see cref="Package"/> and a <see cref="ScorePart"/>.
        /// </summary>
        public const string ScorePackageRelationshipType = "Notoric.Package/Relationships/Package/Score";

        /// <summary>
        /// The type of the relationship between the <see cref="ProjectPart"/> and a <see cref="ScorePart"/>.
        /// </summary>
        public const string ScoreProjectRelationshipType = "Notoric.Package/Relationships/Project/Score"; 
        
        /// <summary>
        /// The compression option for a <see cref="ScorePart"/>.
        /// </summary>
        public const System.IO.Packaging.CompressionOption ScorePartCompression = System.IO.Packaging.CompressionOption.Normal; 
        
        /// <summary>
        /// The content type of a <see cref="ScorePart"/>
        /// </summary>
        public const string ScorePartContentType = "Notoric.Package/Score"; 
        
        /// <summary>
        /// The URI of a score part relative to the score directory.
        /// </summary>
        public const string ScorePartUri = "/Score.xml";
        
        /// <summary>
        /// The URI of the root scores directory.
        /// </summary>
        public const string ScoresRootUri = "/Scores";

        /// <summary>
        /// The local name of the XML element for the Interior property.
        /// </summary>
        public const string SectionInteriorElementName = "interior";

        /// <summary>
        /// The local name of the XML element for the Sections collection.
        /// </summary>
        public const string SectionsElementName = "sections";

        /// <summary>
        /// The local name of the XML attribute for the Segno property.
        /// </summary>
        public const string SegnoAttribute = "segno";

        /// <summary>
        /// The local name of the XML attribute for the SignatureType property.
        /// </summary>
        public const string SignatureTypeAttribute = "signature_type";

        /// <summary>
        /// The local name of the XML element for the <see cref="Size"/> structure.
        /// </summary>
        public const string SizeElementName = "size";

        /// <summary>
        /// The local name of the XML element for the <see cref="Slur"/> class.
        /// </summary>
        public const string SlurElementName = "slur";

        /// <summary>
        /// The local name of the XML element for the <see cref="SolidColorBrush"/> class.
        /// </summary>
        public const string SolidColorBrushElementName = "solid_color_brush";

        /// <summary>
        /// The local name of the XML element for the <see cref="StaffConnector"/> class.
        /// </summary>
        public const string StaffConnectorElementName = "staff_connector";

        /// <summary>
        /// The local name of the XML attribute for the Descriptor property of the staff.
        /// </summary>
        public const string StaffDescriptorAttribute = "staff_descriptor";

        /// <summary>
        /// The local name of the XML element for the <see cref="StaffDescriptor"/> class.
        /// </summary>
        public const string StaffDescriptorElementName = "staff_descriptor";

        /// <summary>
        /// The local name of the XML element for the <see cref="Staff"/> class.
        /// </summary>
        public const string StaffElementName = "staff";

        /// <summary>
        /// The local name of the XML attribute for the StaffPosition property.
        /// </summary>
        public const string StaffPositionAttribute = "staff_position";

        /// <summary>
        /// The local name of the XML attribute for the Start property.
        /// </summary>
        public const string StartAttribute = "start";

        /// <summary>
        /// The local name of the XML element for the starting point property.
        /// </summary>
        public const string StartingPointElementName = "starting_point";

        /// <summary>
        /// The local name of the XML element that holds a collection of <see cref="Staff"/> class instances.
        /// </summary>
        public const string StavesElementName = "staves";

        /// <summary>
        /// The local name of the XML attribute for the StemDirection property.
        /// </summary>
        public const string StemDirectionAttribute = "stem_direction";

        /// <summary>
        /// The local name of the XML attribute for the StemLength property.
        /// </summary>
        public const string StemLengthAttribute = "stem_length";

        /// <summary>
        /// The local name of the XML attribute for the Subito property.
        /// </summary>
        public const string SubitoAttribute = "subito";

        /// <summary>
        /// The local name of the XML element for the <see cref="System"/> class.
        /// </summary>
        public const string SystemElementName = "system";

        /// <summary>
        /// The local name of the XML element for the <see cref="TextSectionElement"/> class.
        /// </summary>
        public const string TextSectionElementName = "text_section";

        /// <summary>
        /// The local name of the XML element for the <see cref="Thickness"/> structure.
        /// </summary>
        public const string ThicknessElementName = "thickness";

        /// <summary>
        /// The local name of the XML element for the <see cref="TieElement"/> class.
        /// </summary>
        public const string TieElementName = "tie";

        /// <summary>
        /// The local name of the XML element for the <see cref="TimeSignatureElement"/> class.
        /// </summary>
        public const string TimeSignatureElementName = "time_signature";

        /// <summary>
        /// The local name of the XML element for the <see cref="ToneElement"/> class.
        /// </summary>
        public const string ToneElementName = "tone";

        /// <summary>
        /// The local name of the XML attribute for the Top property.
        /// </summary>
        public const string TopAttribute = "top";

        /// <summary>
        /// The local name of the XML element for the <see cref="TremoloElement"/> class.
        /// </summary>
        public const string TremoloElementName = "tremolo";

        /// <summary>
        /// The local name of the XML element for the <see cref="TupletElement"/> class.
        /// </summary>
        public const string TupletElementName = "tuplet";

        /// <summary>
        /// The local name of the XML attribute for the Type property.
        /// </summary>
        public const string TypeAttribute = "type";

        /// <summary>
        /// The local name of the XML attribute for the TypeSize property.
        /// </summary>
        public const string TypeSizeAttribute = "type_size";

        /// <summary>
        /// The local name of the XML attribute for the UpperStaff property.
        /// </summary>
        public const string UpperStaffAttribute = "upper_staff";

        /// <summary>
        /// The local name of the XML attribute for the URI property.
        /// </summary>
        public const string UriAttribute = "uri";

        /// <summary>
        /// The local name of the XML attribute for the ValidBeforeBeat property.
        /// </summary>
        public const string ValidBeforeBeatAttribute = "valid_before_beat";

        /// <summary>
        /// The local name of the XML attribute for the Visualization property.
        /// </summary>
        public const string VisualizationAttribute = "visualization";

        /// <summary>
        /// The local name of the XML attribute for the Voice property.
        /// </summary>
        public const string VoiceAttribute = "voice";

        /// <summary>
        /// The local name of the XML element for the <see cref="VoiceDescriptorElement"/> class.
        /// </summary>
        public const string VoiceDescriptorElementName = "voice_descriptor";

        /// <summary>
        /// The local name of the XML attribute for the Width property.
        /// </summary>
        public const string WidthAttribute = "width";

        /// <summary>
        /// The local name of the XML attribute for the X property.
        /// </summary>
        public const string XAttribute = "x";

        /// <summary>
        /// The local name of the XML attribute for the Y property.
        /// </summary>
        public const string YAttribute = "y";

        /// <summary>
        /// The local name of the XML attribute for the Y1 property.
        /// </summary>
        public const string Y1Attribute = "y1";

        /// <summary>
        /// The local name of the XML attribute for the Y2 property.
        /// </summary>
        public const string Y2Attribute = "y2";

        /// <summary>
        /// The local name of the XML attribute for the ZIndex property.
        /// </summary>
        public const string ZIndexAttribute = "z-index";

        #endregion
    }
}
